home *** CD-ROM | disk | FTP | other *** search
/ MacFormat UK 172 / MF_UK_172_1.iso / DiscContents / In the mag / Widgets / quExp 1.6 / quExp / quExp.wdgt / quExp.js < prev   
Encoding:
JavaScript  |  2006-06-15  |  29.0 KB  |  1,095 lines

  1. /*
  2.      quExp
  3.      Copyright (c) 2005 Isizl
  4.      http://www.isizl.com/
  5. */
  6.  
  7. var date = new Date();
  8. var currentMonth = date.getMonth();
  9. var currentDate = date.getDate();
  10. var editable = false;
  11. var listShown = true;
  12. var kdva;
  13. //var decimalct = 1;
  14.  
  15. function getLocalizedString (key)
  16. {
  17.     try {
  18.         var ret = localizedStrings[key];
  19.         if (ret == undefined)
  20.             ret = key;
  21.         return ret;
  22.     } catch (ex) {}
  23.  
  24.     return key;
  25. }
  26.  
  27. function createkey(key)
  28. {
  29.     return widget.identifier + "-" + key;
  30. }
  31.  
  32. function setup() {
  33. document.addEventListener("keydown", keydown, false);
  34.  
  35. ///localize
  36. if(month[0] == "01")
  37. {
  38. document.getElementById("loading").style.top = "6px";
  39. document.getElementById("loading").style.font = "16px 'Futura-CondensedMedium'";
  40. document.getElementById("loading").style.fontWeight = "bold";
  41. }
  42. document.getElementById('loading').innerText = getLocalizedString('lsLoading');
  43. document.getElementById('lsDate').innerText = getLocalizedString('lsDate');
  44. document.getElementById('lsItem').innerText = getLocalizedString('lsItem');
  45. document.getElementById('lsPrice').innerText = getLocalizedString('lsPrice');
  46. document.getElementById('title').innerText = getLocalizedString('lsTitle');
  47. document.getElementById('titlepop').options[0].text = getLocalizedString('lsMonth');
  48. document.getElementById('titlepop').options[1].text = getLocalizedString('lsCustom');
  49. document.getElementById('tsigntex').innerText = getLocalizedString('lsCurrency');
  50. document.getElementById('tsignpop').options[0].text = getLocalizedString('lsDollar');
  51. document.getElementById('tsignpop').options[1].text = getLocalizedString('lsEuro');
  52. document.getElementById('tsignpop').options[2].text = getLocalizedString('lsGuilder');
  53. document.getElementById('tsignpop').options[3].text = getLocalizedString('lsPound');
  54. document.getElementById('tsignpop').options[4].text = getLocalizedString('lsYen');
  55. document.getElementById('tsignpop').options[5].text = getLocalizedString('lsCustom');
  56. document.getElementById('colorlabeltex').innerText = getLocalizedString('lsColorLabel');
  57. document.getElementById('themetex').innerText = getLocalizedString('lsTheme');
  58. document.getElementById('themepop').options[0].text = getLocalizedString('lsDefault');
  59. document.getElementById('themepop').options[1].text = getLocalizedString('lsBlack');
  60. document.getElementById('themepop').options[2].text = getLocalizedString('lsWhite');
  61. document.getElementById('themepop').options[3].text = getLocalizedString('lsClear');
  62. document.getElementById('invdecimal').innerText = getLocalizedString('lsinvdecimal');
  63.  
  64. var doneButton = document.getElementById('doneButton');
  65. createGenericButton(doneButton, getLocalizedString('lsDone'), hidePrefs);
  66.  
  67. widgetpref=widget.preferenceForKey(createkey('widgetpref'));
  68. def_pri="0.00"
  69. //////////
  70. if (widgetpref == 1)
  71. {
  72. var checkci=widget.preferenceForKey(createkey('ci'));
  73. if(checkci)
  74. {
  75. chci(checkci);
  76. }
  77.  
  78. var checktheme=widget.preferenceForKey(createkey('theme'));
  79. if(!checktheme)
  80. {
  81. checktheme=232323;
  82. }
  83. chtheme(checktheme);
  84. document.getElementById("themepop").value = checktheme;
  85.  
  86.     var decimalct = widget.preferenceForKey(createkey('decimalct'));
  87.     if(decimalct == 1)
  88.     {
  89.     document.getElementById("cb_1").checked = true;
  90.     def_pri="0"
  91.     }
  92.     else
  93.     {
  94.     decimalct = 0;
  95.     widget.setPreferenceForKey("0", createkey("decimalct"));
  96.     document.getElementById("cb_1").checked = false;
  97.     }
  98.  
  99.  
  100. ltotali = widget.preferenceForKey(createkey('ltotali'));
  101. document.getElementById("main").style.display = "none";
  102. document.getElementById("loading").style.display = "block";
  103. lcon=1;
  104.     while (lcon<=ltotali) {
  105.     load(lcon);
  106.     lcon++;
  107.     }
  108.  
  109. checkcutitle=widget.preferenceForKey(createkey('checkcutitle'));
  110. if(checkcutitle == 1)
  111. {
  112. document.getElementById("month").innerText = widget.preferenceForKey(createkey('month'));
  113.     document.getElementById("month2").style.display = "none";
  114.     document.getElementById("titlepop").style.display = "none";
  115.     document.getElementById("titleinp").style.display = "block";
  116.     document.getElementById("sub").style.display = "block";
  117.     document.getElementById("titleinp").value = widget.preferenceForKey(createkey('month'));
  118. }
  119. else
  120. {
  121. document.getElementById("month").innerText = month[widget.preferenceForKey(createkey('month'))];
  122. nmonth = widget.preferenceForKey(createkey('month'));
  123. }
  124. num = ltotali;
  125. itemcon=ltotali;
  126.  
  127. var tsignpref = widget.preferenceForKey(createkey('tsign'));
  128. if((tsignpref != 36)&&(tsignpref != 8364)&&(tsignpref != 131)&&(tsignpref != 163)&&(tsignpref != 165))
  129. {
  130.     document.getElementById("tsignpop").style.display = "none";
  131.     document.getElementById("tsigninp").style.display = "block";
  132.     document.getElementById("sub2").style.display = "block";
  133.     document.getElementById("tsign").innerHTML = tsignpref;
  134.     document.getElementById("tsigninp").value = tsignpref;
  135. }
  136. else
  137. {
  138. chtsign(tsignpref);
  139. document.getElementById("tsignpop").value = tsignpref;
  140. }
  141. document.getElementById("loading").style.display = "none";
  142.  
  143. listShown=widget.preferenceForKey(createkey('listShown'));
  144. showhidelist();
  145.  
  146. lcon=1;
  147.     while (lcon<=ltotali) {
  148. vfitem ("item" +lcon);
  149. lcon++;
  150.     }
  151. total();
  152.  
  153. }
  154. else
  155. {
  156. decimalct = 0;
  157. widget.setPreferenceForKey("0", createkey("decimalct"));
  158. document.getElementById("cb_1").checked = false;
  159.  
  160. num="0";
  161. document.getElementById("month").innerText = month[currentMonth];
  162. nmonth = currentMonth;
  163. widget.setPreferenceForKey(currentMonth, createkey("month"));
  164. widget.setPreferenceForKey("1", createkey("widgetpref"));
  165. chtsign(36);
  166. listShown = false;
  167. add();
  168. }
  169. if(month[0] == "01")
  170. {
  171. document.getElementById("ac_month").style.display = "block";
  172. document.getElementById("lsDate").style.top = "42";
  173. document.getElementById("lsDate").style.fontWeight = "bold";
  174. document.getElementById("lsItem").style.top = "42";
  175. document.getElementById("lsItem").style.fontWeight = "bold";
  176. document.getElementById("lsPrice").style.top = "42";
  177. document.getElementById("lsPrice").style.fontWeight = "bold";
  178. }
  179. /////////
  180. }
  181.  
  182. function chci(va) {
  183. if(va == "next")
  184. {
  185. va= widget.preferenceForKey(createkey('ci'));
  186. if (!va)
  187. {
  188. va=1;
  189. }
  190. va++;
  191. if(va > 7)
  192. {
  193. va=1;
  194. }
  195. }
  196.  
  197. var npo = 18;
  198.  
  199. npo= 18 + ((va-1)*12);
  200.  
  201. document.getElementById("ci_img").src = "images/ci_"+va+".png";
  202. document.getElementById("cib_s").style.left = npo;
  203. widget.setPreferenceForKey(va, createkey("ci"));
  204.  
  205. }
  206.  
  207. function decimalct() {
  208.  
  209. var decimalct = widget.preferenceForKey(createkey('decimalct'));
  210. if (decimalct == 0)
  211. {
  212. decimalct = 1;
  213. widget.setPreferenceForKey("1", createkey("decimalct"));
  214. def_pri="0";
  215.  
  216. ltotali = widget.preferenceForKey(createkey('ltotali'));
  217. lcon=1;
  218.     while (lcon<=ltotali) {
  219.     vfpri("price"+lcon);
  220.     lcon++;
  221.     }
  222.  
  223. total();
  224. document.getElementById("cb_1").checked = true;
  225. }
  226. else
  227. {
  228. decimalct = 0;
  229. widget.setPreferenceForKey("0", createkey("decimalct"));
  230. def_pri="0.00";
  231.  
  232. ltotali = widget.preferenceForKey(createkey('ltotali'));
  233. lcon=1;
  234.     while (lcon<=ltotali) {
  235.     vfpri("price"+lcon);
  236.     lcon++;
  237.     }
  238.     
  239. total();
  240. document.getElementById("cb_1").checked = false;
  241. }
  242.  
  243. }
  244.  
  245. function chtsign(va) {
  246. if(va == "custom")
  247. {
  248.     document.getElementById("tsignpop").style.display = "none";
  249.     document.getElementById("tsigninp").style.display = "block";
  250.     document.getElementById("sub2").style.display = "block";
  251.     document.getElementById("tsigninp").focus();
  252. }
  253. else
  254. {
  255. document.getElementById("tsign").innerHTML = '&#'+va+';';
  256. widget.setPreferenceForKey(va, createkey("tsign"));
  257. }
  258. }
  259.  
  260. function settsign ()
  261. {
  262.     document.getElementById("tsigninp").blur();
  263.     document.getElementById("tsigninp").style.display = "none";
  264.     document.getElementById("sub2").style.display = "none";
  265.     document.getElementById("tsignpop").style.display = "block";
  266.     chtsign('36');
  267.     document.getElementById("tsignpop").value = 36;
  268. }
  269.  
  270. function chtheme(va) {
  271.  
  272. document.getElementById("themetop").src = "images/Theme/"+va+"/top.png";
  273. document.getElementById("main").style.background = "url(images/Theme/"+va+"/main.png)";
  274. document.getElementById("themebottom").src = "images/Theme/"+va+"/bottom.png";
  275. document.getElementById("totalm").style.color = "#"+va;
  276. widget.setPreferenceForKey(va, createkey("theme"));
  277. chbacktheme(va);
  278.  
  279. }
  280.  
  281. function cureplacetext(va) {
  282.     var va2 = document.getElementById(va+ 'inp').value;
  283.     document.getElementById(va).innerHTML = va2;
  284.     widget.setPreferenceForKey(va2, createkey("tsign"));
  285. }
  286.  
  287. function cmonth(va) {
  288.  
  289. if (va == "next")
  290. {
  291. document.getElementById("nextmonth_img").src = "Images/nextmonth_b.png";
  292. nmonth++;
  293. if(nmonth > 11)
  294. {
  295. nmonth = 0;
  296. }
  297. }
  298. else if(va == "prev")
  299. {
  300. document.getElementById("prevmonth_img").src = "Images/prevmonth_b.png";
  301. nmonth--;
  302. if(nmonth < 0)
  303. {
  304. nmonth = 11;
  305. }
  306. }
  307. else
  308. {
  309. document.getElementById("centmonth_img").src = "Images/centmonth_b.png";
  310. nmonth = currentMonth;
  311. }
  312.  
  313. document.getElementById("month").innerText = month[nmonth];
  314. widget.setPreferenceForKey(nmonth, createkey("month"));
  315. }
  316.  
  317. function load(va) {
  318.     window.resizeBy(0, 24);
  319.     
  320.     ival = document.createElement('div');
  321.     ival.setAttribute('id', "list" +va);
  322.     ival.setAttribute('class', "list");
  323.     ival.setAttribute('onmousemove', "enterImg('"+va+"');");
  324.     ival.setAttribute('onmouseout', "exitImg('"+va+"');");
  325.     document.getElementById("main").appendChild(ival);
  326.     document.getElementById("list"+va).style.display = widget.preferenceForKey(createkey("display"+va));
  327.     
  328.     ival = document.createElement('img');
  329.     ival.setAttribute('src', "images/remove.png");
  330.     ival.setAttribute('id', "remove" +va);
  331.     ival.setAttribute('class', "remove");
  332.     ival.setAttribute('onclick', "remove('"+va+"');");
  333.     ival.setAttribute('title', getLocalizedString('lsRemove'));
  334.     document.getElementById("list" +va).appendChild(ival);
  335.         
  336.     var ival = document.createElement('div');
  337.     ival.setAttribute('id', "date" +va);
  338.     ival.setAttribute('class', "date");
  339.     ival.setAttribute('onclick', "edits('date" +va+"');");
  340.     document.getElementById("list" +va).appendChild(ival);
  341.     document.getElementById("date" +va).innerText = widget.preferenceForKey(createkey("date"+va));
  342.  
  343.     var ival = document.createElement('input');
  344.     ival.setAttribute('class', "tadate");
  345.     ival.setAttribute('id', "tadate" + va);
  346.     ival.setAttribute('maxlength', "2");
  347.     ival.setAttribute('onfocus', "edits('date" +va+"');");
  348.     ival.setAttribute('onblur', "edite('date" +va+"');");
  349.     document.getElementById("list" + va).appendChild(ival);
  350.     document.getElementById("tadate" + va).value = widget.preferenceForKey(createkey("date"+va));
  351.  
  352.     var ival = document.createElement('div');
  353.     ival.setAttribute('id', "item" +va);
  354.     ival.setAttribute('class', "item");
  355.     ival.setAttribute('onclick', "edits('item" +va+"');");
  356.     document.getElementById("list" +va).appendChild(ival);
  357.     document.getElementById("item" +va).innerText = widget.preferenceForKey(createkey("item"+va));
  358.  
  359.     var ival = document.createElement('input');
  360.     ival.setAttribute('class', "taitem");
  361.     ival.setAttribute('id', "taitem" + va);
  362.     ival.setAttribute('maxlength', "15");
  363.     ival.setAttribute('onfocus', "edits('item" +va+"');");
  364.     ival.setAttribute('onblur', "edite('item" +va+"');");
  365.     document.getElementById("list" + va).appendChild(ival);
  366.     document.getElementById("taitem" + va).value = widget.preferenceForKey(createkey("item"+va));    
  367.         
  368.     var ival = document.createElement('div');
  369.     ival.setAttribute('id', "price" +va);
  370.     ival.setAttribute('class', "price");
  371.     ival.setAttribute('onclick', "edits('price" +va+"');");
  372.     document.getElementById("list" +va).appendChild(ival);
  373.  
  374.     var ival = document.createElement('input');
  375.     ival.setAttribute('class', "taprice");
  376.     ival.setAttribute('id', "taprice" + va);
  377.     ival.setAttribute('maxlength', "8");
  378.     ival.setAttribute('onfocus', "edits('price" +va+"');");
  379.     ival.setAttribute('onblur', "edite('price" +va+"');");
  380.     document.getElementById("list" + va).appendChild(ival);
  381.     document.getElementById("taprice" + va).value = widget.preferenceForKey(createkey("price"+va));
  382.  
  383.     vfpri("price"+va);
  384.     
  385.     var ival = document.createElement('img');
  386.     ival.setAttribute('src', "images/item.png");
  387.     document.getElementById("list" +va).appendChild(ival);
  388.  
  389. }
  390.  
  391. function add() {
  392.  
  393. if(!listShown)
  394. {
  395. showhidelist ();
  396. }
  397.  
  398. document.getElementById("add_img").src = "Images/add_b.png";
  399.  
  400.  
  401. var date = new Date();
  402. var currentDate = date.getDate();
  403.  
  404.     window.resizeBy(0, 24);
  405.     num++;
  406.  
  407.     ival = document.createElement('div');
  408.     ival.setAttribute('id', "list" +num);
  409.     ival.setAttribute('class', "list");
  410.     ival.setAttribute('onmousemove', "enterImg('"+num+"');");
  411.     ival.setAttribute('onmouseout', "exitImg('"+num+"');");
  412.     document.getElementById("main").appendChild(ival);
  413.     
  414.     ival = document.createElement('img');
  415.     ival.setAttribute('src', "images/remove.png");
  416.     ival.setAttribute('id', "remove" +num);
  417.     ival.setAttribute('class', "remove");
  418.     ival.setAttribute('onclick', "remove('"+num+"');");
  419.     ival.setAttribute('title', getLocalizedString('lsRemove'));
  420.     document.getElementById("list" +num).appendChild(ival);
  421.     
  422.     var ival = document.createElement('div');
  423.     ival.setAttribute('id', "date" +num);
  424.     ival.setAttribute('class', "date");
  425.     ival.setAttribute('onclick', "edits('date" +num+"');");
  426.     document.getElementById("list" +num).appendChild(ival);
  427.     document.getElementById("date" +num).innerText = currentDate;
  428.     
  429.     var ival = document.createElement('input');
  430.     ival.setAttribute('class', "tadate");
  431.     ival.setAttribute('id', "tadate" + num);
  432.     ival.setAttribute('maxlength', "2");
  433.     ival.setAttribute('onfocus', "edits('date" +num+"');");
  434.     ival.setAttribute('onblur', "edite('date" +num+"');");
  435.     document.getElementById("list" + num).appendChild(ival);
  436.     document.getElementById("tadate" + num).value = currentDate;
  437.     
  438.     var ival = document.createElement('div');
  439.     ival.setAttribute('id', "item" +num);
  440.     ival.setAttribute('class', "item");
  441.     ival.setAttribute('onclick', "edits('item" +num+"');");
  442.     document.getElementById("list" +num).appendChild(ival);
  443.     document.getElementById("item" +num).innerText = getLocalizedString('lsItem2') +num;
  444.     
  445.     var ival = document.createElement('input');
  446.     ival.setAttribute('class', "taitem");
  447.     ival.setAttribute('id', "taitem" + num);
  448.     ival.setAttribute('maxlength', "15");
  449.     ival.setAttribute('onfocus', "edits('item" +num+"');");
  450.     ival.setAttribute('onblur', "edite('item" +num+"');");
  451.     document.getElementById("list" + num).appendChild(ival);
  452.     document.getElementById("taitem" + num).value = getLocalizedString('lsItem2') +num;
  453.  
  454.     var ival = document.createElement('div');
  455.     ival.setAttribute('id', "price" +num);
  456.     ival.setAttribute('class', "price");
  457.     ival.setAttribute('onclick', "edits('price" +num+"');");
  458.     document.getElementById("list" +num).appendChild(ival);
  459.     document.getElementById("price" +num).innerText = def_pri;
  460.     
  461.     var ival = document.createElement('input');
  462.     ival.setAttribute('class', "taprice");
  463.     ival.setAttribute('id', "taprice" + num);
  464.     ival.setAttribute('maxlength', "8");
  465.     ival.setAttribute('onfocus', "edits('price" +num+"');");
  466.     ival.setAttribute('onblur', "edite('price" +num+"');");
  467.     document.getElementById("list" + num).appendChild(ival);
  468.     document.getElementById("taprice" + num).value = def_pri;
  469.     
  470.     var ival = document.createElement('img');
  471.     ival.setAttribute('src', "images/item.png");
  472.     document.getElementById("list" +num).appendChild(ival);
  473.     
  474.     widget.setPreferenceForKey(currentDate, createkey("date"+num));
  475.     widget.setPreferenceForKey(getLocalizedString('lsItem2')+num, createkey("item" +num));
  476.     widget.setPreferenceForKey(def_pri, createkey("price"+num));
  477.     widget.setPreferenceForKey("block", createkey("display"+num));
  478.     
  479.     widget.setPreferenceForKey(num, createkey("ltotali"));
  480.     
  481.     itemcon=num;
  482.     total();
  483.     
  484. // required for onmouse effect bug
  485. document.getElementById("add_img").src = "Images/add.png";
  486.  
  487. //
  488. }
  489.  
  490.  
  491. function addcomma(va) {
  492. var decimalct = widget.preferenceForKey(createkey('decimalct'));
  493.  
  494. if(decimalct == 1)
  495. {
  496. adcl=3;
  497. }
  498. else
  499. {
  500. adcl=6;
  501. }
  502.  
  503. va = '' + va;
  504. var nva = "";
  505. if(va < 0)
  506. {
  507. nva = va.substring(1,va.length);
  508. }
  509. else
  510. {
  511. nva = va;
  512. }
  513.  
  514. if (nva.length > adcl) {
  515. var mod = nva.length % adcl;
  516. var output = (mod > 0 ? (nva.substring(0,mod)) : '');
  517. for (i=0 ; i < Math.floor(nva.length / adcl); i++) 
  518. {
  519. if ((mod == 0) && (i == 0))
  520. {
  521. output+= nva.substring(mod+ adcl * i, mod + adcl * i + adcl);
  522. }
  523. else
  524. {
  525. output+= ',' + nva.substring(mod + adcl * i, mod + adcl * i + adcl);
  526. }
  527. }
  528.  
  529. if(va < 0)
  530. {
  531. output= '-' + output;
  532. }
  533.  
  534.  
  535. return (output);
  536. }
  537. else return va;
  538.  
  539. }
  540.  
  541.  
  542. function vfpri(va){
  543.             var pnv = document.getElementById('ta'+va).value;
  544.             pnv = pnv.replace(/\,/g, "");
  545.             var decimalct = widget.preferenceForKey(createkey('decimalct'));
  546.             if(decimalct == 1)
  547.             {
  548.         if(pnv == "")
  549.         {
  550.         pnv=0;
  551.         }
  552.         var pnv = parseInt(pnv);
  553.         if( pnv > 999999)
  554.         {
  555.         pricri="999999";
  556.         }
  557.         else if( pnv < -999999)
  558.         {
  559.         pricri="-999999";
  560.         }
  561.         else
  562.         {
  563.         pricri=pnv;
  564.         }
  565.             }
  566.             else
  567.             {
  568.         
  569.         var pnv = parseInt(pnv*1000);
  570.         if( pnv > 9999999)
  571.         {
  572.         pricri="9999.99";
  573.         }
  574.         else if( pnv < -9999999)
  575.         {
  576.         pricri="-9999.99";
  577.         }
  578.         else
  579.         {
  580.         pricri=(pnv/1000).toFixed(2);
  581.         if ((pricri < 1)&&(pricri >= 0.1)&&(pricri != "0.00"))
  582.         {
  583.         pricri= "0" +pricri;
  584.         }
  585.         else if ((pricri > -1)&&(pricri <= -0.1)&&(pricri != "0.00"))
  586.         {
  587.         pricri= "0" +pricri;
  588.         pricri = "-0." + pricri.substring(3,5);
  589.         }
  590.         
  591.         }            
  592.             }
  593.         document.getElementById('ta'+va).value = pricri;
  594.         pricri = addcomma(pricri);
  595.         document.getElementById(va).innerText = pricri;    
  596.         widget.setPreferenceForKey(document.getElementById('ta'+va).value, createkey(va));
  597.             
  598.  
  599. }
  600.  
  601. function vfitem (va)
  602. {
  603. document.getElementById(va).className = "itemo";
  604. var gtextwidth = document.getElementById(va).offsetWidth;
  605.  
  606. if(gtextwidth > 97)
  607. {
  608. document.getElementById(va).className = "itemss";
  609. document.getElementById("ta" + va).className = "taitemss";
  610. }
  611. else if(gtextwidth > 82)
  612. {
  613. document.getElementById(va).className = "items";
  614. document.getElementById("ta" + va).className = "taitemss";
  615. }
  616. else
  617. {
  618. document.getElementById(va).className = "item";
  619. document.getElementById("ta" + va).className = "taitem";
  620. }
  621.  
  622. }
  623.  
  624.  
  625. function edits (va)
  626. {
  627.     editable = true;
  628.     document.getElementById(va).style.display = "none";
  629.     document.getElementById('ta'+va).style.opacity = 1;
  630.     document.getElementById('ta'+va).focus();
  631.     kdva = va;
  632.  
  633. }
  634.  
  635. function edite (va)
  636. {
  637.         editable = false;
  638.         
  639.         if(va == "month")
  640.         {
  641.             document.getElementById("month2").style.display = "none";
  642.             document.getElementById(va).innerText = document.getElementById('titleinp').value;
  643.             widget.setPreferenceForKey(document.getElementById('titleinp').value, createkey("month"));
  644.             widget.setPreferenceForKey("1", createkey("checkcutitle"));
  645.         }
  646.         else
  647.         {
  648.         document.getElementById(va).innerText = document.getElementById('ta'+va).value;
  649.         document.getElementById('ta'+va).style.opacity = 0;
  650.         document.getElementById(va).style.display = "block";
  651.         
  652.  
  653.         var chpri=va.substr(0,4);
  654.         if(chpri == "pric")
  655.         {
  656.         
  657.         vfpri(va);
  658.         
  659.         total();
  660.         }
  661.         else if (chpri == "item")
  662.         {
  663.         widget.setPreferenceForKey(document.getElementById('ta'+va).value, createkey(va));
  664.         
  665.         vfitem (va);
  666.         }
  667.         else
  668.         {
  669.         widget.setPreferenceForKey(document.getElementById('ta'+va).value, createkey(va));
  670.         }
  671.         }
  672.         document.getElementById('ta'+va).blur();
  673. }
  674.  
  675. function remove(num) {
  676.     document.getElementById("price" +num).innerText = "0.00";
  677.     document.getElementById("taprice" +num).value = "0";
  678.     document.getElementById("list"+num).style.display = "none";
  679.     //document.getElementById("main").removeChild(document.getElementById("list"+num));
  680.     widget.setPreferenceForKey("0.00", createkey("price"+num));
  681.     widget.setPreferenceForKey("none", createkey("display"+num));
  682.     total();
  683.     window.resizeBy(0,-24);
  684. }
  685.  
  686. function keydown(event) {
  687.     key = event.keyCode;
  688.     if (editable == true) {
  689.         if (key == 13) {
  690.             edite(kdva);
  691.         }
  692.     }
  693. }
  694.  
  695. function total() {
  696.         var ftotal = 0;
  697.         var con = 1;
  698.         
  699.             var decimalct = widget.preferenceForKey(createkey('decimalct'));
  700.             if(decimalct == 1)
  701.             {
  702.         while (con<=itemcon) {
  703.  
  704.         var getprice = (document.getElementById("taprice" +con).value);
  705.  
  706.             var ftotal = parseInt(ftotal)+parseInt(getprice);
  707.             con++;
  708.         }
  709.         
  710.     if((ftotal >= 100000000)||(ftotal <= -100000000))
  711.     {
  712.     ftotal = "NA";
  713.     }
  714.             }
  715.             else
  716.             {
  717.         
  718.         while (con<=itemcon) {
  719.  
  720.         var getprice = (document.getElementById("taprice" +con).value)*1000;
  721.  
  722.             var ftotal = parseInt(ftotal)+parseInt(getprice);
  723.             con++;
  724.         }
  725.     ftotal=ftotal/1000;
  726.     ftotal=ftotal.toFixed(2);
  727.     if((ftotal >= 1000000)||(ftotal <= -1000000))
  728.     {
  729.     ftotal = "NA";
  730.     }
  731.             }
  732.     ftotal = addcomma(ftotal);
  733.     document.getElementById("total").innerText =ftotal;
  734.     
  735.     vftotalw();
  736.     
  737. }
  738.  
  739. function vftotalw ()
  740. {
  741.     var gwidth = document.getElementById("totalm").offsetWidth;
  742.     if(gwidth > 66)
  743.     {
  744.     document.getElementById("totalif").style.width =gwidth;
  745.     }
  746.     else
  747.     {
  748.     document.getElementById("totalif").style.width =66;
  749.     }
  750. }
  751.  
  752.  
  753.  
  754. function cutitle ()
  755. {
  756.     document.getElementById("titlepop").style.display = "none";
  757.     document.getElementById("titleinp").style.display = "block";
  758.     document.getElementById("sub").style.display = "block";
  759.     document.getElementById("titleinp").focus();
  760. }
  761.  
  762. function settitle ()
  763. {
  764.     document.getElementById("titleinp").blur();
  765.     widget.setPreferenceForKey("0", createkey("checkcutitle"));
  766.     document.getElementById("titleinp").style.display = "none";
  767.     document.getElementById("sub").style.display = "none";
  768.     document.getElementById("titlepop").style.display = "block";
  769.     document.getElementById("month2").style.display = "block";
  770.     document.getElementById("month").innerText = month[currentMonth];
  771.     widget.setPreferenceForKey(currentMonth, createkey("month"));
  772.     document.getElementById("titlepop").value = "month";
  773.     nmonth=currentMonth;
  774. }
  775.  
  776.  
  777. function docopy (event) {
  778. ltotali = widget.preferenceForKey(createkey('ltotali'));
  779. var va= getLocalizedString('lsDate') + '\t' + getLocalizedString('lsItem') + '\t' + getLocalizedString('lsPrice') + '\n';
  780.  
  781.     lcon=1;
  782.     while (lcon<=ltotali) {
  783.     
  784.     va1=widget.preferenceForKey(createkey("date"+lcon));
  785.     va2=widget.preferenceForKey(createkey("item" +lcon));
  786.     va3=widget.preferenceForKey(createkey("price"+lcon));
  787.     va4=widget.preferenceForKey(createkey("display"+lcon));
  788.     lcon++;
  789.     
  790.     if (va4 == 'block')
  791.     {
  792.     va= va + va1 + '\t' + va2 + '\t' + va3 + '\n';
  793.     }
  794.     
  795.     }
  796. var ftotal=document.getElementById("total").innerText;
  797. va= va + '\t\t' + ftotal;
  798.     event.clipboardData.setData('text/plain', va);
  799.     event.preventDefault();
  800.     event.stopPropagation();
  801. }
  802.  
  803.  
  804.  
  805.  
  806. function buttonoff(event, id) {
  807.     document.getElementById(id+"_img").src = "Images/"+id+".png";
  808. }
  809.  
  810.  
  811. function copytoclipboard () {
  812. document.getElementById("copy_img").src = "Images/copy_b.png";
  813.  
  814. ltotali = widget.preferenceForKey(createkey('ltotali'));
  815. var va= getLocalizedString('lsDate') + '\t' + getLocalizedString('lsItem') + '\t' + getLocalizedString('lsPrice') + '\n';
  816.  
  817.     lcon=1;
  818.     while (lcon<=ltotali) {
  819.     
  820.     va1=widget.preferenceForKey(createkey("date"+lcon));
  821.     va2=widget.preferenceForKey(createkey("item" +lcon));
  822.     va3=widget.preferenceForKey(createkey("price"+lcon));
  823.     va4=widget.preferenceForKey(createkey("display"+lcon));
  824.     lcon++;
  825.     
  826.     if (va4 == 'block')
  827.     {
  828.     va= va + va1 + '\t' + va2 + '\t' + va3 + '\n';
  829.     }
  830.     
  831.     }
  832. var ftotal=document.getElementById("total").innerText;
  833. va= va + '\t\t' + ftotal;
  834.  
  835. va = va.replace("\'","");
  836.  
  837. widget.system("/bin/echo '" + va + "' | /usr/bin/pbcopy", null);
  838. }
  839.  
  840.  
  841.  
  842.  
  843. function onremove ()
  844. {
  845.     ltotali = widget.preferenceForKey(createkey('ltotali'));
  846.     widget.setPreferenceForKey(null, createkey("widgetpref"));
  847.     widget.setPreferenceForKey(null, createkey("decimalct"));
  848.     widget.setPreferenceForKey(null, createkey("month"));
  849.     widget.setPreferenceForKey(null, createkey("tsign"));
  850.     widget.setPreferenceForKey(null, createkey("checkcutitle"));
  851.     widget.setPreferenceForKey(null, createkey("ltotali"));
  852.     widget.setPreferenceForKey(null, createkey("theme"));
  853.     widget.setPreferenceForKey(null, createkey("ci"));
  854.     widget.setPreferenceForKey(null, createkey("listShown"));
  855.     
  856.     lcon=1;
  857.     while (lcon<=ltotali) {
  858.     widget.setPreferenceForKey(null, createkey("date"+lcon));
  859.     widget.setPreferenceForKey(null, createkey("item" +lcon));
  860.     widget.setPreferenceForKey(null, createkey("price"+lcon));
  861.     widget.setPreferenceForKey(null, createkey("display"+lcon));
  862.     lcon++;
  863.     }
  864. }
  865.  
  866. function showhidelist ()
  867. {
  868.     if (!listShown)
  869.     {
  870.     document.getElementById('main').style.display = 'block';
  871.     document.getElementById('lsDate').style.display = 'block';
  872.     document.getElementById('lsItem').style.display = 'block';
  873.     document.getElementById('lsPrice').style.display = 'block';
  874.     document.getElementById('top').style.height = '58px';
  875.     document.getElementById('top').style.overflow = '';
  876.     widget.setPreferenceForKey(false, createkey("listShown"));
  877.     listShown = true;
  878.     }
  879.     else
  880.     {
  881.     document.getElementById('main').style.display = 'none';
  882.     document.getElementById('lsDate').style.display = 'none';
  883.     document.getElementById('lsItem').style.display = 'none';
  884.     document.getElementById('lsPrice').style.display = 'none';
  885.     document.getElementById('top').style.height = '40px';
  886.     document.getElementById('top').style.overflow = 'hidden';
  887.     widget.setPreferenceForKey(true, createkey("listShown"));
  888.     listShown = false;
  889.     }
  890. }
  891.  
  892.  
  893. if (window.widget)
  894. {
  895.     widget.onremove = onremove;
  896.     window.onblur = onblur;
  897. }
  898.  
  899. function onblur ()
  900. {
  901.     if (editable == true)
  902.     {
  903.     edite(kdva);
  904.     }
  905. }
  906.  
  907.  
  908. ///
  909.  
  910. // default info mouseover event
  911. function enterflip(event) {
  912.     document.getElementById('fliprollie').style.display = 'block';
  913. }
  914.  
  915. function exitflip(event) {
  916.     document.getElementById('fliprollie').style.display = 'none';
  917. }
  918.  
  919.  
  920. function showPrefs() {
  921.     var front = document.getElementById("front");
  922.     var back = document.getElementById("back");
  923.     
  924.     window.resizeBy(0,129);
  925.     
  926.     if (window.widget)
  927.         widget.prepareForTransition("ToBack");
  928.                 
  929.     front.style.display="none";
  930.     back.style.display="block";
  931.     
  932.     
  933.     if (window.widget)
  934.         setTimeout ('widget.performTransition();', 0);  
  935. }
  936.  
  937.  
  938. function hidePrefs() {
  939.     var front = document.getElementById("front");
  940.     var back = document.getElementById("back");
  941.     
  942.     if (window.widget)
  943.         widget.prepareForTransition("ToFront");
  944.     
  945.     back.style.display="none";
  946.     front.style.display="block";
  947.     
  948.     
  949.     exitflip(event);
  950.     
  951.     window.resizeBy(0,-129);
  952.     
  953.     if (window.widget)
  954.         setTimeout ('widget.performTransition();', 0);
  955.     
  956.     /// verify needed
  957.     vftotalw();
  958. }
  959.  
  960. ///
  961.  
  962. var flipShown = false;
  963. var animation = {duration:0, starttime:0, to:1.0, now:0.0, from:0.0, firstElement:null, timer:null};
  964.  
  965. function mousemove(event) {
  966.     if (!flipShown) {
  967.         if (animation.timer != null) {
  968.             clearInterval (animation.timer);
  969.             animation.timer  = null;
  970.         }
  971.                 
  972.         var starttime = (new Date).getTime() - 13;
  973.                 
  974.         animation.duration = 500;
  975.         animation.starttime = starttime;
  976.         animation.firstElement = document.getElementById ('flip');
  977.         animation.secondElement = document.getElementById ('add');
  978.         animation.thirdElement = document.getElementById ('prevmonth');
  979.         animation.fourthElement = document.getElementById ('nextmonth');
  980.         animation.fifthElement = document.getElementById ('centmonth');
  981.         animation.sixthElement = document.getElementById ('copy');
  982.         animation.timer = setInterval ("animate();", 13);
  983.         animation.from = animation.now;
  984.         animation.to = 1.0;
  985.         animate();
  986.         flipShown = true;
  987.     }
  988. }
  989.  
  990. function mouseexit(event) {
  991.     if (flipShown) {
  992.         if (animation.timer != null) {
  993.             clearInterval (animation.timer);
  994.             animation.timer  = null;
  995.         }
  996.                 
  997.         var starttime = (new Date).getTime() - 13;
  998.                 
  999.         animation.duration = 500;
  1000.         animation.starttime = starttime;
  1001.         animation.firstElement = document.getElementById ('flip');
  1002.         animation.secondElement = document.getElementById ('add');
  1003.         animation.thirdElement = document.getElementById ('prevmonth');
  1004.         animation.fourthElement = document.getElementById ('nextmonth');
  1005.         animation.fifthElement = document.getElementById ('centmonth');
  1006.         animation.sixthElement = document.getElementById ('copy');
  1007.         animation.timer = setInterval ("animate();", 13);
  1008.         animation.from = animation.now;
  1009.         animation.to = 0.0;
  1010.         animate();
  1011.         flipShown = false;
  1012.     }
  1013. }
  1014.  
  1015. function animate() {
  1016.     var T;
  1017.     var ease;
  1018.     var time = (new Date).getTime();
  1019.                 
  1020.     T = limit_3(time-animation.starttime, 0, animation.duration);
  1021.         
  1022.     if (T >= animation.duration) {
  1023.         clearInterval (animation.timer);
  1024.         animation.timer = null;
  1025.         animation.now = animation.to;
  1026.     } else {
  1027.         ease = 0.5 - (0.5 * Math.cos(Math.PI * T / animation.duration));
  1028.         animation.now = computeNextFloat (animation.from, animation.to, ease);
  1029.     }
  1030.         
  1031.     animation.firstElement.style.opacity = animation.now;
  1032.     animation.secondElement.style.opacity = animation.now;
  1033.     animation.thirdElement.style.opacity = animation.now;
  1034.     animation.fourthElement.style.opacity = animation.now;
  1035.     animation.fifthElement.style.opacity = animation.now;
  1036.     animation.sixthElement.style.opacity = animation.now;
  1037. }
  1038.  
  1039. function limit_3 (a, b, c) {
  1040.     return a < b ? b : (a > c ? c : a);
  1041. }
  1042.  
  1043. function computeNextFloat (from, to, ease) {
  1044.     return from + (to - from) * ease;
  1045. }
  1046.  
  1047. ///
  1048.  
  1049. function chbacktheme (va) {
  1050.  
  1051. document.getElementById("backgroundImage").src = "images/Theme/"+va+"/backside.png";
  1052.  
  1053. }
  1054.  
  1055. // img mouseover event
  1056. function enterImg(num) {
  1057.     document.getElementById("remove" +num).style.visibility = "visible";
  1058. }
  1059.  
  1060. function exitImg(num) {
  1061.     document.getElementById("remove" +num).style.visibility = "hidden";
  1062. }
  1063.  
  1064. function enterImgop(a,b) {
  1065.     document.getElementById(a).style.opacity = b;
  1066. }
  1067.  
  1068. function exitImgop(a,b) {
  1069.     document.getElementById(a).style.opacity = b;
  1070. }
  1071.  
  1072. function enterImgsw(va) {
  1073.     document.getElementById(va).src = "images/"+va+"_b.png";
  1074. }
  1075.  
  1076. function exitImgsw(va) {
  1077.     document.getElementById(va).src = "images/"+va+".png";
  1078. }
  1079.  
  1080. function wrapURL(url) {
  1081.     if (window.widget)
  1082.         widget.openURL(url);
  1083.     else
  1084.         window.location = url;
  1085. }
  1086.  
  1087. function textcheck (event)
  1088. {
  1089.     var element = document.getElementById("cb_1");
  1090.     
  1091.     element.checked = !element.checked;
  1092.     decimalct();
  1093. }
  1094.  
  1095.